<?php
/**
 * 图片操作类
 * User: 小菜鸟儿
 * Email: 496651923@qq.com
 */

namespace library;

use think\image;

class ImgOperate
{
    /**
     *	生成缩略图
     *	@param  string	    $image      传入的图片路径
     *	@param	    $width      宽度
     *	@param	    $height     高度
     *  @param	    $method     1.等比例缩放；2.缩放后填充;3.居中裁剪;4.左上角裁剪;5.右下角裁剪;6.固定尺寸缩放
     *	@param	    $default    没有图片时，默认返回内容
     *  @return                 图片地址
     */
    public static function getThumb($image, $width = 220, $height = 220, $method = 3, $default = '') {
        /*判断是否为微信远程的头像*/
        $pos  =  strpos ( $image ,  'http://thirdwx.qlogo.cn' );
        if ( $pos  !==  false ) return $image;
        $image='.'.$image;
        if(file_exists($image)) {
            /* 处理iOS图片旋转问题 -S */
            $exif = exif_read_data($image);
            if(!empty($exif['Orientation']) && $exif['Orientation']==6) {
                $image_op = imagerotate(imagecreatefromjpeg($image),-90,0);
                imagejpeg($image_op, $image);
                imagedestroy($image_op);
            }
            /* 处理iOS图片旋转问题 -E */

            $prefix = 'T'.$width.'x'.$height.'_';
            $image = trim($image, '/');
            $name = basename($image);
            $thumb_image = dirname($image).'/'.$prefix.$name;
            if(!file_exists($thumb_image)) {
                $_thumb = Image::open($image);
                $_thumb->thumb($width, $height, $method)->save($thumb_image, null, 100);
            }
            return '/'.$thumb_image;
        }else {
            return '/'.$default;
        }
    }

    /**
     *  将图片源码转为文件并存入数据库
     *  @param      $img_source     图片源码数据
     *  @param      $target_dir     图片文件保存地址
     *  @return                     转换成功后会返回文件ID
     */
    public static function sourceToTable($img_source,$target_dir='Tmp'){
        //匹配出图片的格式
        if (preg_match('/^(data:\s*image\/(\w+);base64,)/',$img_source, $result)){
            $type = $result[2];
            $new_file = "Uploads/".$target_dir."/".date('Ymd')."/";
            if(!file_exists($new_file)){
                //检查是否有该文件夹，如果没有就创建，并给予最高权限
                mk_dir($new_file, 0777);
            }
            $new_file = $new_file.time().rand(10,20).".{$type}";
            if (file_put_contents($new_file, base64_decode(str_replace($result[1], '',$img_source)))){
                $imginfo=getimagesize($new_file);
                $data=array (
                    'file_name' =>time().rand(10,20).".{$type}",
                    'save_path' =>$new_file,
                    'ext' => $type,
                    'mime' => $imginfo[mime],
                    'size' => filesize($new_file),
                    'width' => $imginfo[0],
                    'height' => $imginfo[1],
                    'md5' => md5_file($new_file),
                    'sha1' => sha1_file($new_file),
                    'member_id' => session("member_id")
                );
                $result=update_data("file",array(),array(),$data);
                if(is_numeric($result)){
                    return $result;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

	/**
	 *  将图片源码转为文件
	 *  @param      $img_source     图片源码数据
	 *  @param      $target_dir     图片文件保存地址
	 *  @return                     转换成功后会返回文件地址
	 */
	public static function sourceToImg($img_source,$target_dir='Tmp'){
		//匹配出图片的格式
		if (preg_match('/^(data:\s*image\/(\w+);base64,)/',$img_source, $result)){
			$type = $result[2];
			$new_file = "uploads/".$target_dir."/".date('Ymd')."/";
			if(!file_exists($new_file)){
				//检查是否有该文件夹，如果没有就创建，并给予最高权限
				mk_dir($new_file, 0777);
			}
			$new_file = $new_file.time().rand(10,20).".{$type}";
			if (file_put_contents($new_file, base64_decode(str_replace($result[1], '',$img_source)))){
				return $new_file;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}
}